"""
继承demo-
    java里面也有继承 父类子类的关系 java关键字etends
        子类就会带上父类的属性和方法，同时也可以修改父类的属性和方法
        继承可以无限往下继承，但是一个子类只能继承一个父类
    python里面也有继承, 写法是class Dog(Animal): animal就是dog继承的父类
        python可以实现多继承，也就是一个子类可以继承多个父类
"""

"""
继承写法 python
撞见类时，如果不写父类，默认继承Object
写了父类就能继承父类方法
"""
class Animal():
    def __init__(self, name, age, sex):
        self._name = name
        self_age = age
        self._sex = sex

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, name):
        self._name = name

    @property
    def age(self):
        return self._age

    @age.setter
    def age(self, age):
        self._age = age

    @property
    def sex(self):
        return self._sex

    @sex.setter
    def age(self, sex):
        self._sex = sex

    def run(self):
        print("动物会跑")

    def sleep(self):
        print("动物睡觉")


class Dog(Animal):
    def __init__(self,name,age,sex,height):
        super().__init__(name,age,sex)
        self._height=height

    def dark(self):
        print("狗会叫")
    def run(self):
        print("狗跑了")

dog = Dog("name","age","sex",12)
dog.dark()
dog.run()

"""
方法的重写：
    父类引用指向子类对象,这种情况就是子类重写了父类的方法，那么在调用的时，就会通过子类实例调用父类的方法时会指向自己重写的方法
    关键字:Override
    逻辑:当我们调用的时候，有限调用当前类的方法，如果没有，机会网上调用父类的方法，一直最后调到Object
方法的重载:
    构造方法的参数名称，参数个数，参数顺序不同，那么方法不同
    关键字:OverLoad
"""

"""
super()，直接调用父类的属性和方法.这样能为父类赋值
"""

"""
多重继承：
    查看当前类所有的父类 __bases__ 注意是双下划线
    Python支持多继承,()里面可以写多个父类.但开发中尽量避免使用多重继承,会让代码复杂
    如果多个父类中有同名方法，会按照顺序查找，谁在前使用谁。前边的方法会覆盖后面的方法
"""
print(Dog.__base__)